#include "vtor_led.h"

#ifdef __DEMO_PROJECT__
#include "main.h"

#define LED_PWM_Port GPIOB
#define LED_PWM_Pin GPIO_PIN_1

#define LED_BLINK_Port GPIOB
#define LED_BLINK_Pin GPIO_PIN_1

#define VTOR_LED_Port GPIOB
#define VTOR_LED_Pin GPIO_PIN_1

VtorLed vtorLedArray[2];
VtorLed* stateVtorLed;

VtorPwm vtorPwmArray[2] = {0};
VtorPwm* ledPwm = NULL;

VtorBlink vtorBlinkArray[2] = {0};
VtorBlink* ledBlink = NULL;


void VtorBlink_WritePin(VtorBlink* blink, uint8_t pinState)
{
	if(blink == ledBlink)
	{
		(pinState)
		? HAL_GPIO_WritePin(LED_BLINK_Port, LED_BLINK_Pin, GPIO_PIN_RESET)
		: HAL_GPIO_WritePin(LED_BLINK_Port, LED_BLINK_Pin, GPIO_PIN_SET);
	}
}


void VtorPwm_WritePin(VtorPwm* pwm, uint8_t pinState)
{
	if(pwm == ledPwm)
	{
		(pinState)
		? HAL_GPIO_WritePin(LED_PWM_Port, LED_PWM_Pin, GPIO_PIN_RESET)
		: HAL_GPIO_WritePin(LED_PWM_Port, LED_PWM_Pin, GPIO_PIN_SET);
	}
}

void VtorLed_WritePin(VtorLed* led, uint8_t pinState)
{
	if(led == stateVtorLed)
	{
		(pinState)
		? HAL_GPIO_WritePin(VTOR_LED_Port, VTOR_LED_Pin, GPIO_PIN_RESET)
		: HAL_GPIO_WritePin(VTOR_LED_Port, VTOR_LED_Pin, GPIO_PIN_SET);
	}
}

void VtorPwm_Init(void)
{
	__HAL_RCC_GPIOB_CLK_ENABLE();

	GPIO_InitTypeDef GPIO_InitStruct = {0};
	GPIO_InitStruct.Pin = LED_PWM_Pin;
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
	HAL_GPIO_Init(LED_PWM_Port, &GPIO_InitStruct);

	ledPwm = &vtorPwmArray[0];
	ledPwm->arr = 10;
	ledPwm->ccr = 5;
	ledPwm->cnt = 0;
}

void VtorBlink_Init(void)
{
	__HAL_RCC_GPIOB_CLK_ENABLE();

	GPIO_InitTypeDef GPIO_InitStruct = {0};
	GPIO_InitStruct.Pin = LED_BLINK_Pin;
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
	HAL_GPIO_Init(LED_BLINK_Port, &GPIO_InitStruct);

	ledBlink = &vtorBlinkArray[0];
	ledBlink->cycleArr = 2000 - 1;
	ledBlink->cycleCnt = 2000 - 1;
	ledBlink->pwmArr = 250 - 1;
	ledBlink->pwmCcr = 10 - 1;
	ledBlink->repeatCcr = 2;
}

void VtorLed_Init()
{
	__HAL_RCC_GPIOB_CLK_ENABLE();

	GPIO_InitTypeDef GPIO_InitStruct = {0};
	GPIO_InitStruct.Pin = VTOR_LED_Pin;
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
	HAL_GPIO_Init(VTOR_LED_Port, &GPIO_InitStruct);

	stateVtorLed = &vtorLedArray[0];

	VtorLed_SetMode(stateVtorLed, 12);

}


#endif // __VTOR_LED__
